/**
 * Create in 2012-9-8 下午2:12:19.
 */
package kit4j.util.io.file;

import java.io.File;

/**
 * 文件操作实用工具类。
 * 
 * @author MiniKnife
 * 
 */
public abstract class FileUtil {
	
	/**
	 * 删除给定的文件夹(包括文件夹中的所有子文件(夹))。
	 * 
	 * @param dir
	 *            要删除的文件夹
	 * @return 如果给定的文件夹和文件夹中的所有子文件(夹)都删除成功，则返回true，如果有文件(夹)删除失败，则会跳过该文件(夹)继续删除操作，并最终返回false。<br />
	 *         特别的，如果给定的File对象为null或不是文件夹对象，将返回false。
	 */
	public static boolean deleteDirectory(File dir) {
		if (dir == null || !dir.isDirectory()) {
			return false;
		}

		boolean isSuccessed = true;
		File[] subFiles = dir.listFiles();

		for (File sf : subFiles) {
			if (sf.isDirectory()) {
				isSuccessed = isSuccessed && deleteDirectory(sf);
			} else {
				isSuccessed = isSuccessed && sf.delete();
			}
		}

		isSuccessed = isSuccessed && dir.delete();

		return isSuccessed;
	}
}
